home *** CD-ROM | disk | FTP | other *** search
- // ===============================================================
- // Fragment Program: Glare
- // Description: glare/contrast/saturation adjustment
- // Last Update: 09/10/2003
- // Coder: Tiago Sousa
- // ===============================================================
-
- #include "../CGVPMacro.csi"
-
- MainInput
- {
- uniform sampler2D ScreenTex : texunit0,
- uniform sampler2D GlareTex : texunit1,
- uniform sampler2D GlareAdjustTex : texunit2,
- uniform sampler2D ScreenBluredTex : texunit3,
- uniform float4 vSaturationAmount,
- uniform float4 vConstrastAmount,
- uniform float4 vConstrastAmount02
- }
-
- DeclarationsScript
- {
- OUT_T0_T1_T2_T3
- FOUT
- }
-
- CoreScript
- {
- // get screen
- float4 fScreenColor = tex2D(ScreenTex, IN.Tex0.xy);
- // get glare map
- float4 fGlareColor = tex2D(GlareTex, IN.Tex1.xy);
- // get luminosity map
- float4 fGlareAdjust = tex2D(GlareAdjustTex, IN.Tex2.xy);
- // get screen blured map
- //float4 fScreenColorBlured = tex2D(ScreenBluredTex, IN.Tex3.xy);
-
- // ## Add glare to scene ##
- float3 vFinalComposing=saturate((1-fGlareAdjust.xyz)*fGlareColor.xyz+fScreenColor.xyz);
- float fContrastLerp=saturate((1-fGlareAdjust.z)*vConstrastAmount.w+vConstrastAmount02.w);
-
- // ## adjust scene saturation ##
- float fSceneLuminosity = dot(float3(0.33, 0.59, 0.11), vFinalComposing.xyz);
- float3 vSaturationAdjust=lerp(vFinalComposing.xyz, fSceneLuminosity, vSaturationAmount.w);
-
- // ## adjust scene contrast ##
- float3 vConstrastAdjust=saturate(lerp( vSaturationAdjust.xyz, 2*(vSaturationAdjust.xyz-0.5), 1-fContrastLerp ));
-
- OUT.Color.xyz = vConstrastAdjust;
- OUT.Color.a = 1;
- }
-
-